package com.tom.architect.party3.day24;

import androidx.appcompat.app.AppCompatActivity;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.FormBody;
import okhttp3.MediaType;
import okhttp3.MultipartBody;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;
import okio.BufferedSink;
import android.os.Bundle;
import android.util.Log;

import com.tom.architect.R;
import java.io.IOException;


// OkHttp 的基本使用。
public class MainActivity24 extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main24);

        okHttpUse();
    }

    // 使用okHttp
    private void okHttpUse() {
        OkHttpClient client = new OkHttpClient();
        RequestBody requestBody = new FormBody.Builder()
                .add("name", "ZhangSan").build(); // add()参数传递
//        MultipartBody multipartBody = new MultipartBody.Builder()
//                .addFormDataPart().build();
        // 1. 构建一个请求Request：里面有url、端口、请求头、表单提交(contentType, contentLength)。
        Request request = new Request.Builder()
//                .post(requestBody)  // 上传文件
                .url("http://www.baidu.com").build();

        // 2. 把Request 封装转成一个 RealCall对象。
        Call call = client.newCall(request);
        // 3. enqueue 队列处理，执行入队列。【重点内容】
        // 将RealCall变成AsyncCall(继承自Runnable)，最终执行NamedRunnable:run方法(里面执行execute)，
        // 执行RealCall的execute()同步方法。线程池Dispatcher执行--> AsyncCall:execute()
        // 执行RealCall:execute-->  getResponseWithInterceptionChain()  返回Response
        // BufferedSource 是okIO里面的东西。
        call.enqueue(new Callback() { // RealCall.enqueue()
            @Override
            public void onFailure(Call call, IOException e) {
                Log.e("TAG", "onFailure: " + e.getMessage());
            }
            @Override
            public void onResponse(Call call, Response response) throws IOException {
                String result = response.body().string();
                Log.e("TAG", "onResponse: " + result);
            }
        });
    }

}
